home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / SocketServices.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  21.3 KB  |  811 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        SocketServices.h
  3.  
  4.      Contains:    This file contains constants and data structures that
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1994-1998 by Apple Computer, Inc. All rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __SOCKETSERVICES__
  18. #define __SOCKETSERVICES__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23. #ifndef __MIXEDMODE__
  24. #include <MixedMode.h>
  25. #endif
  26.  
  27.  
  28.  
  29. #if PRAGMA_ONCE
  30. #pragma once
  31. #endif
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. #if PRAGMA_IMPORT
  38. #pragma import on
  39. #endif
  40.  
  41. #if PRAGMA_STRUCT_ALIGN
  42.     #pragma options align=mac68k
  43. #elif PRAGMA_STRUCT_PACKPUSH
  44.     #pragma pack(push, 2)
  45. #elif PRAGMA_STRUCT_PACK
  46.     #pragma pack(2)
  47. #endif
  48.  
  49. /*
  50.   ///////////////////////////////////////////////////////////////////////////////////////
  51.       TypeDefs for the Socket Services function codes
  52. */
  53.  
  54. typedef Byte                             SS_BYTE;
  55. typedef Byte                             SS_FLAGS8;
  56. typedef Byte                             SS_IRQ;
  57. typedef Byte                             SS_PWRLEVEL;
  58. typedef UInt16                             SS_ADAPTER;
  59. typedef UInt16                             SS_BCD;
  60. typedef UInt16                             SS_COUNT;
  61. typedef UInt16                             SS_EDC;
  62. typedef UInt16                             SS_FLAGS16;
  63. typedef UInt16                             SS_PAGE;
  64. typedef UInt16                             SS_PWRINDEX;
  65. typedef UInt16                             SS_SIGNATURE;
  66. typedef UInt16                             SS_SKTBITS;
  67. typedef UInt16                             SS_SOCKET;
  68. typedef UInt16                             SS_SPEED;
  69. typedef UInt16                             SS_WINDOW;
  70. typedef UInt16                             SS_WORD;
  71. typedef UInt32                             SS_BASE;
  72. typedef UInt32                             SS_FLAGS32;
  73. typedef UInt32                             SS_OFFSET;
  74. typedef UInt32                             SS_SIZE;
  75. typedef Ptr                             SS_PTR;
  76. typedef OSErr                             SS_RETCODE;
  77.  
  78. struct SS_SCHARTBL {
  79.     UInt16                             sktCaps;                    /*    SS_FLAGS16*/
  80.     UInt32                             activeHigh;                    /*    SS_FLAGS32*/
  81.     UInt32                             activeLow;                    /*    SS_FLAGS32*/
  82. };
  83. typedef struct SS_SCHARTBL                SS_SCHARTBL;
  84.  
  85. struct SS_SISTRUCT {
  86.     UInt16                             bufferLength;                /*    SS_WORD*/
  87.     UInt16                             dataLength;                    /*    SS_WORD*/
  88.     SS_SCHARTBL                     charTable;                    /*    SS_FLAGS16*/
  89. };
  90. typedef struct SS_SISTRUCT                SS_SISTRUCT;
  91.  
  92. enum {
  93.     STR_SIZE                    = 24
  94. };
  95.  
  96. /* minimum string length*/
  97.  
  98. struct SS_VISTRUCT {
  99.     UInt16                             bufferLength;                /*    SS_WORD*/
  100.     UInt16                             dataLength;                    /*    SS_WORD*/
  101.     char                             szImplementor[1];            /*    SS_WORD*/
  102.     Byte                             padding[1];                    /*    */
  103. };
  104. typedef struct SS_VISTRUCT                SS_VISTRUCT;
  105.  
  106. struct SS_ACHARTBL {
  107.     UInt16                             adpCaps;                    /*    SS_FLAGS16*/
  108.     UInt32                             activeHigh;                    /*    SS_FLAGS32*/
  109.     UInt32                             activeLow;                    /*    SS_FLAGS32*/
  110. };
  111. typedef struct SS_ACHARTBL                SS_ACHARTBL;
  112.  
  113. struct SS_PWRENTRY {
  114.     Byte                             powerLevel;                    /*    SS_PWRLEVEL*/
  115.     Byte                             validSignals;                /*    SS_FLAGS8*/
  116. };
  117. typedef struct SS_PWRENTRY                SS_PWRENTRY;
  118.  
  119. struct SS_AISTRUCT {
  120.     UInt16                             bufferLength;                /*    SS_WORD*/
  121.     UInt16                             dataLength;                    /*    SS_WORD*/
  122.     SS_ACHARTBL                     charTable;
  123.     UInt16                             numPwrEntries;                /*    SS_WORD*/
  124.     SS_PWRENTRY *                    pwrEntryPtr;
  125. };
  126. typedef struct SS_AISTRUCT                SS_AISTRUCT;
  127.  
  128. struct SS_MEMWINTBL {
  129.     UInt16                             memWndCaps;                    /*    SS_FLAGS16*/
  130.     UInt32                             firstByte;                    /*    SS_BASE*/
  131.     UInt32                             lastByte;                    /*    SS_BASE*/
  132.     UInt32                             minSize;                    /*    SS_SIZE*/
  133.     UInt32                             maxSize;                    /*    SS_SIZE*/
  134.     UInt32                             reqGran;                    /*    SS_SIZE*/
  135.     UInt32                             reqBase;                    /*    SS_SIZE*/
  136.     UInt32                             reqOffset;                    /*    SS_SIZE*/
  137.     UInt16                             slowest;                    /*    SS_SPEED*/
  138.     UInt16                             fastest;                    /*    SS_SPEED*/
  139. };
  140. typedef struct SS_MEMWINTBL                SS_MEMWINTBL;
  141.  
  142. struct SS_IOWINTBL {
  143.     UInt16                             ioWndCaps;                    /*    SS_FLAGS16*/
  144.     UInt32                             firstByte;                    /*    SS_BASE*/
  145.     UInt32                             lastByte;                    /*    SS_BASE*/
  146.     UInt32                             minSize;                    /*    SS_SIZE*/
  147.     UInt32                             maxSize;                    /*    SS_SIZE*/
  148.     UInt32                             reqGran;                    /*    SS_SIZE*/
  149.     UInt16                             addrLines;                    /*    SS_COUNT*/
  150.     Byte                             eisaSlot;                    /*    SS_FLAGS8*/
  151.     Byte                             padding[1];                    /*    */
  152. };
  153. typedef struct SS_IOWINTBL                SS_IOWINTBL;
  154.  
  155. struct SS_WISTRUCT {
  156.     UInt16                             bufferLength;                /*    SS_WORD*/
  157.     UInt16                             dataLength;                    /*    SS_WORD*/
  158.     UInt16                             numTblEntries;                /*    SS_WORD*/
  159.     SS_MEMWINTBL                     memWinTbl;
  160.     SS_IOWINTBL                     ioWinTbl;
  161. };
  162. typedef struct SS_WISTRUCT                SS_WISTRUCT;
  163.  
  164. /*————————————————————————————————————————————————————————————————————————
  165.     function selectors passed to Socket Service entry point
  166. ————————————————————————————————————————————————————————————————————————*/
  167.  
  168. enum {
  169.     fnSSGetAdapterCount            = 0x80,
  170.     fnSSUnsupported81            = 0x81,
  171.     fnSSUnsupported82            = 0x82,
  172.     fnSSGetSSInfo                = 0x83,
  173.     fnSSInquireAdapter            = 0x84,
  174.     fnSSGetAdapter                = 0x85,
  175.     fnSSSetAdapter                = 0x86,
  176.     fnSSInquireWindow            = 0x87,
  177.     fnSSGetWindow                = 0x88,
  178.     fnSSSetWindow                = 0x89,
  179.     fnSSGetPage                    = 0x8A,
  180.     fnSSSetPage                    = 0x8B,
  181.     fnSSInquireSocket            = 0x8C,
  182.     fnSSGetSocket                = 0x8D,
  183.     fnSSSetSocket                = 0x8E,
  184.     fnSSGetStatus                = 0x8F,
  185.     fnSSResetSocket                = 0x90,
  186.     fnSSUnsupported91            = 0x91,
  187.     fnSSUnsupported92            = 0x92,
  188.     fnSSUnsupported93            = 0x93,
  189.     fnSSUnsupported94            = 0x94,
  190.     fnSSInquireEDC                = 0x95,
  191.     fnSSGetEDC                    = 0x96,
  192.     fnSSSetEDC                    = 0x97,
  193.     fnSSStartEDC                = 0x98,
  194.     fnSSPauseEDC                = 0x99,
  195.     fnSSResumeEDC                = 0x9A,
  196.     fnSSStopEDC                    = 0x9B,
  197.     fnSSReadEDC                    = 0x9C,
  198.     fnSSGetVendorInfo            = 0x9D,
  199.     fnSSAcknowledgeInterrupt    = 0x9E,
  200.     fnSSGetSetPriorHandler        = 0x9F,
  201.     fnSSGetSetSSAddr            = 0xA0,
  202.     fnSSGetAccessOffsets        = 0xA1,
  203.     fnSSUnsupportedA2            = 0xA2,
  204.     fnSSUnsupportedA3            = 0xA3,
  205.     fnSSUnsupportedA4            = 0xA4,
  206.     fnSSUnsupportedA5            = 0xA5,
  207.     fnSSUnsupportedA6            = 0xA6,
  208.     fnSSUnsupportedA7            = 0xA7,
  209.     fnSSUnsupportedA8            = 0xA8,
  210.     fnSSUnsupportedA9            = 0xA9,
  211.     fnSSUnsupportedAA            = 0xAA,
  212.     fnSSUnsupportedAB            = 0xAB,
  213.     fnSSUnsupportedAC            = 0xAC,
  214.     fnSSUnsupportedAD            = 0xAD,
  215.     fnSSVendorSpecific            = 0xAE
  216. };
  217.  
  218. /*    SSVendorSpecificPB.function values*/
  219.  
  220.  
  221. enum {
  222.     fnVSReserved                = 0x00,
  223.     fnVSGetSocketLocationIcon    = 0x01,
  224.     fnVSGetSocketLocationText    = 0x02,
  225.     fnVSDoSocketLocalization    = 0x03,
  226.     fnVSAppleSocketCapabilities    = 0x04,
  227.     fnVSSleepWakeNotification    = 0x05
  228. };
  229.  
  230.  
  231. /*————————————————————————————————————————————————————————————————————————
  232.     defines for the Socket Services function codes
  233. ————————————————————————————————————————————————————————————————————————*/
  234.  
  235. enum {
  236.     AC_IND                        = 1,                            /* adapter characteristics*/
  237.     AC_PWR                        = 2,
  238.     AC_DBW                        = 4
  239. };
  240.  
  241.  
  242. enum {
  243.     AS_POWERDOWN                = 1,
  244.     AS_MAINTAIN                    = 2
  245. };
  246.  
  247.  
  248. enum {
  249.     EC_UNI                        = 1,
  250.     EC_BI                        = 2,
  251.     EC_REGISTER                    = 4,
  252.     EC_MEMORY                    = 8,
  253.     EC_PAUSABLE                    = 16,
  254.     EC_WRITE                    = 16
  255. };
  256.  
  257.  
  258. enum {
  259.     ET_CHECK8                    = 1,
  260.     ET_SDLC16                    = 2
  261. };
  262.  
  263.  
  264. enum {
  265.     IF_MEMORY                    = 1,
  266.     IF_IO                        = 2
  267. };
  268.  
  269.  
  270. enum {
  271.     IRQ_HIGH                    = 64,
  272.     IRQ_ENABLE                    = 128
  273. };
  274.  
  275.  
  276. enum {
  277.     IRQ_MEMORY                    = 4,
  278.     IRQ_IO                        = 4
  279. };
  280.  
  281.  
  282. enum {
  283.     PS_ATTRIBUTE                = 0x01,
  284.     PS_ENABLED                    = 0x02,
  285.     PS_WP                        = 0x04
  286. };
  287.  
  288.  
  289. enum {
  290.     PWR_VCC                        = 128,                            /* Power pins in PwrEntry elements*/
  291.     PWR_VPP1                    = 64,
  292.     PWR_VPP2                    = 32
  293. };
  294.  
  295.  
  296. enum {
  297.     SBM_WP                        = 1,
  298.     SBM_LOCKED                    = 2,
  299.     SBM_EJECT                    = 4,
  300.     SBM_INSERT                    = 8,
  301.     SBM_BVD1                    = 16,
  302.     SBM_BVD2                    = 32,
  303.     SBM_RDYBSY                    = 64,
  304.     SBM_CD                        = 128
  305. };
  306.  
  307.  
  308. enum {
  309.     SBM_LOCK                    = 16,
  310.     SBM_BATT                    = 32,
  311.     SBM_BUSY                    = 64,
  312.     SBM_XIP                        = 128
  313. };
  314.  
  315. /* Vendor Specific Apple Socket Capabilities */
  316.  
  317. enum {
  318.     SBM_SLEEP_PWR                = 1
  319. };
  320.  
  321.  
  322. enum {
  323.     WC_COMMON                    = 1,
  324.     WC_IO                        = 2,
  325.     WC_ATTRIBUTE                = 4,
  326.     WC_TYPE_MASK                = 7,
  327.     WC_WAIT                        = 128
  328. };
  329.  
  330.  
  331. enum {
  332.     WC_BASE                        = 1,
  333.     WC_SIZE                        = 2,
  334.     WC_WENABLE                    = 4,
  335.     WC_8BIT                        = 8,
  336.     WC_16BIT                    = 16,
  337.     WC_BALIGN                    = 32,
  338.     WC_POW2                        = 64,
  339.     WC_CALIGN                    = 128,
  340.     WC_PAVAIL                    = 256,
  341.     WC_PSHARED                    = 512,
  342.     WC_PENABLE                    = 1024,
  343.     WC_WP                        = 2048
  344. };
  345.  
  346.  
  347. enum {
  348.     WC_INPACK                    = 128,
  349.     WC_EISA                        = 256,
  350.     WC_CENABLE                    = 512
  351. };
  352.  
  353.  
  354. enum {
  355.     WS_IO                        = 1,
  356.     WS_ENABLED                    = 2,
  357.     WS_16BIT                    = 4
  358. };
  359.  
  360.  
  361. enum {
  362.     WS_PAGED                    = 8,
  363.     WS_EISA                        = 16,
  364.     WS_CENABLE                    = 32,
  365.     WS_SWAP_LITTLE_TO_BIG_ENDIAN = 64
  366. };
  367.  
  368.  
  369. enum {
  370.     SS_SIG_VALUE                = 0x5353                        /* 'SS'*/
  371. };
  372.  
  373.  
  374. enum {
  375.     SS_CMPL_1_00                = 0x0100,                        /* compliant with rev 1.0 of SS standard*/
  376.     SS_CMPL_1_01                = 0x0101,                        /* compliant with rev 1.01 of SS standard*/
  377.     SS_CMPL_2_00                = 0x0200,                        /* compliant with rev 2.0 of SS standard*/
  378.     SS_CMPL_2_10                = 0x0210                        /* compliant with rev 2.1 of SS standard*/
  379. };
  380.  
  381. /*————————————————————————————————————————————————————————————————————————
  382.     Universal ProcPtr for Socket Service entry point
  383. ————————————————————————————————————————————————————————————————————————*/
  384. typedef CALLBACK_API( short , PCCardSSEntryProcPtr )(UInt16 fnCode, Ptr callPB, Ptr dataPtr);
  385. typedef STACK_UPP_TYPE(PCCardSSEntryProcPtr)                     PCCardSSEntryUPP;
  386. enum { uppPCCardSSEntryProcInfo = 0x00000FA0 };                 /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
  387. #define NewPCCardSSEntryProc(userRoutine)                         (PCCardSSEntryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardSSEntryProcInfo, GetCurrentArchitecture())
  388. #define CallPCCardSSEntryProc(userRoutine, fnCode, callPB, dataPtr)  CALL_THREE_PARAMETER_UPP((userRoutine), uppPCCardSSEntryProcInfo, (fnCode), (callPB), (dataPtr))
  389. /*————————————————————————————————————————————————————————————————————————
  390.     Card Services calls used by a Socket Service
  391. ————————————————————————————————————————————————————————————————————————*/
  392.  
  393. struct CSEventEntryPB {
  394.     UInt32                             ssHandlerID;
  395.     UInt16                             adapter;
  396.     UInt16                             socket;
  397.     UInt16                             message;
  398.     Byte                             intrpBits;
  399.     Byte                             padding;
  400. };
  401. typedef struct CSEventEntryPB            CSEventEntryPB;
  402. typedef CALLBACK_API( void , PCCardCSEntryProcPtr )(CSEventEntryPB *pb);
  403. typedef STACK_UPP_TYPE(PCCardCSEntryProcPtr)                     PCCardCSEntryUPP;
  404. enum { uppPCCardCSEntryProcInfo = 0x000000C0 };                 /* pascal no_return_value Func(4_bytes) */
  405. #define NewPCCardCSEntryProc(userRoutine)                         (PCCardCSEntryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardCSEntryProcInfo, GetCurrentArchitecture())
  406. #define CallPCCardCSEntryProc(userRoutine, pb)                     CALL_ONE_PARAMETER_UPP((userRoutine), uppPCCardCSEntryProcInfo, (pb))
  407. /*------------        AddSocketServices        ------------                            */
  408.  
  409.  
  410. struct AddSocketServicesPB {
  411.     PCCardSSEntryUPP                 ssEntry;                    /* -> given to CS for its use*/
  412.     PCCardCSEntryUPP                 csEntry;                    /* <- taken from CS so we know where to enter*/
  413.  
  414.     UInt32                             dataPtr;
  415.     UInt32                             attributes;
  416.     UInt16                             numAdapters;
  417.     UInt16                             numSockets;
  418. };
  419. typedef struct AddSocketServicesPB        AddSocketServicesPB;
  420. /*------------         ReplaceSocketServices    ------------                            */
  421.  
  422.  
  423. struct ReplaceSocketServicesPB {
  424.     PCCardSSEntryUPP                 ssEntry;
  425.     PCCardSSEntryUPP                 oldSSEntry;
  426.  
  427.     UInt32                             dataPtr;
  428.     UInt16                             socket;
  429.     UInt16                             numSockets;
  430.     UInt16                             attributes;
  431. };
  432. typedef struct ReplaceSocketServicesPB    ReplaceSocketServicesPB;
  433. EXTERN_API( OSErr )
  434. CSAddSocketServices                (AddSocketServicesPB *    pb)                                    TWOWORDINLINE(0x7050, 0xAAF0);
  435.  
  436. EXTERN_API( OSErr )
  437. CSReplaceSocketServices            (ReplaceSocketServicesPB * pb)                                TWOWORDINLINE(0x7051, 0xAAF0);
  438.  
  439.  
  440.  
  441. /*————————————————————————————————————————————————————————————————————————
  442.     parameter blocks for each Socket Service function
  443. ————————————————————————————————————————————————————————————————————————*/
  444.  
  445. struct SSAcknowledgeInterruptPB {
  446.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  447.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  448. };
  449. typedef struct SSAcknowledgeInterruptPB    SSAcknowledgeInterruptPB;
  450.  
  451. struct SSGetAccessOffsetsPB {
  452.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  453.     Byte                             mode;                        /*    SS_BYTE*/
  454.     Byte                             reserved;                    /*    padding*/
  455.     UInt16                             count;                        /*    SS_COUNT*/
  456.     Ptr                             buffer;                        /*    SS_PTR*/
  457.     UInt16                             numAvail;                    /*    SS_COUNT*/
  458. };
  459. typedef struct SSGetAccessOffsetsPB        SSGetAccessOffsetsPB;
  460.  
  461. struct SSGetAdapterCountPB {
  462.     UInt16                             totalAdapters;                /*    SS_COUNT*/
  463.     UInt16                             sig;                        /*    SS_SIGNATURE*/
  464. };
  465. typedef struct SSGetAdapterCountPB        SSGetAdapterCountPB;
  466.  
  467. struct SSGetSetAdapterPB {
  468.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  469.     Byte                             state;                        /*    SS_FLAGS8*/
  470.     Byte                             irqStatus;                    /*    SS_IRQ*/
  471. };
  472. typedef struct SSGetSetAdapterPB        SSGetSetAdapterPB;
  473.  
  474. struct SSGetSetEDCPB {
  475.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  476.     UInt16                             edc;                        /*    SS_EDC*/
  477.     UInt16                             socket;                        /*    SS_SOCKET*/
  478.     Byte                             state;                        /*    SS_FLAGS8*/
  479.     Byte                             edcType;                    /*    SS_FLAGS8*/
  480. };
  481. typedef struct SSGetSetEDCPB            SSGetSetEDCPB;
  482.  
  483. struct SSGetSetPagePB {
  484.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  485.     UInt16                             window;                        /*    SS_WINDOW*/
  486.     UInt16                             page;                        /*    SS_PAGE*/
  487.     Byte                             state;                        /*    SS_FLAGS8*/
  488.     Byte                             reserved;                    /*    padding*/
  489.     UInt32                             offset;                        /*    SS_OFFSET*/
  490. };
  491. typedef struct SSGetSetPagePB            SSGetSetPagePB;
  492.  
  493. struct SSGetSetPriorHandlerPB {
  494.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  495.     Byte                             mode;                        /*    SS_FLAGS8*/
  496.     Byte                             reserved;                    /*    padding*/
  497.     Ptr                             handler;                    /*    SS_PTR*/
  498. };
  499. typedef struct SSGetSetPriorHandlerPB    SSGetSetPriorHandlerPB;
  500.  
  501. struct SSGetSetSocketPB {
  502.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  503.     UInt16                             socket;                        /*    SS_SOCKET*/
  504.     UInt16                             vccIndex;                    /*    SS_PWRINDEX*/
  505.     UInt16                             vpp1Index;                    /*    SS_PWRINDEX*/
  506.     UInt16                             vpp2Index;                    /*    SS_PWRINDEX*/
  507.     Byte                             scIntMask;                    /*    SS_FLAGS8*/
  508.     Byte                             state;                        /*    SS_FLAGS8*/
  509.     Byte                             ctlInd;                        /*    SS_FLAGS8*/
  510.     Byte                             ireqRouting;                /*    SS_IRQ*/
  511.     Byte                             ifType;                        /*    SS_FLAGS8*/
  512.     Byte                             padding[1];                    /*    */
  513. };
  514. typedef struct SSGetSetSocketPB            SSGetSetSocketPB;
  515.  
  516. struct SSGetSetSSAddrPB {
  517.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  518.     Byte                             mode;                        /*    SS_BYTE*/
  519.     Byte                             subfunc;                    /*    SS_BYTE*/
  520.     UInt16                             numAddData;                    /*    SS_COUNT*/
  521.     Ptr                             buffer;                        /*    SS_PTR*/
  522. };
  523. typedef struct SSGetSetSSAddrPB            SSGetSetSSAddrPB;
  524.  
  525. struct SSGetSetWindowPB {
  526.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  527.     UInt16                             window;                        /*    SS_WINDOW*/
  528.     UInt16                             socket;                        /*    SS_SOCKET*/
  529.     UInt32                             size;                        /*    SS_SIZE*/
  530.     Byte                             state;                        /*    SS_FLAGS8*/
  531.     Byte                             reserved;                    /*    padding*/
  532.     UInt16                             speed;                        /*    SS_SPEED*/
  533.     UInt32                             base;                        /*    SS_BASE*/
  534. };
  535. typedef struct SSGetSetWindowPB            SSGetSetWindowPB;
  536.  
  537. struct SSGetSSInfoPB {
  538.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  539.     UInt16                             compliance;                    /*    SS_BCD*/
  540.     UInt16                             numAdapters;                /*    SS_COUNT*/
  541.     UInt16                             firstAdapter;                /*    SS_ADAPTER*/
  542. };
  543. typedef struct SSGetSSInfoPB            SSGetSSInfoPB;
  544.  
  545. struct SSGetStatusPB {
  546.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  547.     UInt16                             socket;                        /*    SS_SOCKET*/
  548.     Byte                             cardState;                    /*    SS_FLAGS8*/
  549.     Byte                             socketState;                /*    SS_FLAGS8*/
  550.     Byte                             ctlInd;                        /*    SS_FLAGS8*/
  551.     Byte                             ireqRouting;                /*    SS_IRQ*/
  552.     Byte                             ifType;                        /*    SS_FLAGS8*/
  553.     Byte                             padding[1];                    /*    */
  554. };
  555. typedef struct SSGetStatusPB            SSGetStatusPB;
  556.  
  557. struct SSGetVendorInfoPB {
  558.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  559.     Byte                             vendorInfoType;                /*    SS_BYTE*/
  560.     Byte                             reserved;                    /*    padding*/
  561.     Ptr                             buffer;                        /*    SS_PTR*/
  562.     UInt16                             release;                    /*    SS_BCD*/
  563. };
  564. typedef struct SSGetVendorInfoPB        SSGetVendorInfoPB;
  565.  
  566. struct SSInquireAdapterPB {
  567.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  568.     Ptr                             buffer;                        /*    SS_PTR*/
  569.     UInt16                             numSockets;                    /*    SS_COUNT*/
  570.     UInt16                             numWindows;                    /*    SS_COUNT*/
  571.     UInt16                             numEDCs;                    /*    SS_COUNT*/
  572. };
  573. typedef struct SSInquireAdapterPB        SSInquireAdapterPB;
  574.  
  575. struct SSInquireEDCPB {
  576.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  577.     UInt16                             edc;                        /*    SS_EDC*/
  578.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  579.     Byte                             caps;                        /*    SS_FLAGS8*/
  580.     Byte                             types;                        /*    SS_FLAGS8*/
  581. };
  582. typedef struct SSInquireEDCPB            SSInquireEDCPB;
  583.  
  584. struct SSInquireSocketPB {
  585.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  586.     UInt16                             socket;                        /*    SS_SOCKET*/
  587.     Ptr                             buffer;                        /*    SS_PTR*/
  588.     Byte                             scIntCaps;                    /*    SS_FLAGS8*/
  589.     Byte                             scRptCaps;                    /*    SS_FLAGS8*/
  590.     Byte                             ctlIndCaps;                    /*    SS_FLAGS8*/
  591.     Byte                             padding[1];                    /*    */
  592. };
  593. typedef struct SSInquireSocketPB        SSInquireSocketPB;
  594.  
  595. struct SSInquireWindowPB {
  596.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  597.     UInt16                             window;                        /*    SS_WINDOW*/
  598.     Ptr                             buffer;                        /*    SS_PTR*/
  599.     Byte                             wndCaps;                    /*    SS_FLAGS8*/
  600.     Byte                             reserved;                    /*    padding*/
  601.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  602. };
  603. typedef struct SSInquireWindowPB        SSInquireWindowPB;
  604.  
  605. struct SSPauseEDCPB {
  606.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  607.     UInt16                             edc;                        /*    SS_EDC*/
  608. };
  609. typedef struct SSPauseEDCPB                SSPauseEDCPB;
  610.  
  611. struct SSReadEDCPB {
  612.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  613.     UInt16                             edc;                        /*    SS_EDC*/
  614.     UInt16                             value;                        /*    SS_WORD*/
  615. };
  616. typedef struct SSReadEDCPB                SSReadEDCPB;
  617.  
  618. struct SSResetSocketPB {
  619.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  620.     UInt16                             socket;                        /*    SS_SOCKET*/
  621. };
  622. typedef struct SSResetSocketPB            SSResetSocketPB;
  623.  
  624. struct SSResumeEDCPB {
  625.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  626.     UInt16                             edc;                        /*    SS_EDC*/
  627. };
  628. typedef struct SSResumeEDCPB            SSResumeEDCPB;
  629.  
  630. struct SSStartEDCPB {
  631.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  632.     UInt16                             edc;                        /*    SS_EDC*/
  633. };
  634. typedef struct SSStartEDCPB                SSStartEDCPB;
  635.  
  636. struct SSStopEDCPB {
  637.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  638.     UInt16                             edc;                        /*    SS_EDC*/
  639. };
  640. typedef struct SSStopEDCPB                SSStopEDCPB;
  641.  
  642. struct SSVendorSpecificPB {
  643.     UInt16                             vsFunction;                    /*    SS_WORD*/
  644.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  645.     UInt16                             socket;                        /*    SS_SOCKET*/
  646.     UInt16                             bufferSize;                    /*    SS_WORD*/
  647.     Ptr                             buffer;                        /*    SS_PTR*/
  648.     UInt32                             attributes;                    /*    SS_LONG*/
  649. };
  650. typedef struct SSVendorSpecificPB        SSVendorSpecificPB;
  651. /*    ‘attributes’ constants */
  652.  
  653. enum {
  654.     kSSGoingToSleep                = 0x00000001,
  655.     kSSWakingFromSleep            = 0x00000002
  656. };
  657.  
  658. /*————————————————————————————————————————————————————————————————————————
  659.     Non-specific Socket Services Functions
  660. ————————————————————————————————————————————————————————————————————————*/
  661. EXTERN_API( SS_RETCODE )
  662. SSGetAdapterCount                (SSGetAdapterCountPB *    pb,
  663.                                  Ptr                     dataPtr);
  664.  
  665. /*————————————————————————————————————————————————————————————————————————
  666.     Adapter Functions
  667. ————————————————————————————————————————————————————————————————————————*/
  668. EXTERN_API( SS_RETCODE )
  669. SSAcknowledgeInterrupt            (SSAcknowledgeInterruptPB * pb,
  670.                                  Ptr                     dataPtr);
  671.  
  672. EXTERN_API( SS_RETCODE )
  673. SSGetSetPriorHandler            (SSGetSetPriorHandlerPB * pb,
  674.                                  Ptr                     dataPtr);
  675.  
  676. EXTERN_API( SS_RETCODE )
  677. SSGetSetSSAddr                    (SSGetSetSSAddrPB *        pb,
  678.                                  Ptr                     dataPtr);
  679.  
  680. EXTERN_API( SS_RETCODE )
  681. SSGetAccessOffsets                (SSGetAccessOffsetsPB *    pb,
  682.                                  Ptr                     dataPtr);
  683.  
  684. EXTERN_API( SS_RETCODE )
  685. SSGetAdapter                    (SSGetSetAdapterPB *    pb,
  686.                                  Ptr                     dataPtr);
  687.  
  688. EXTERN_API( SS_RETCODE )
  689. SSGetSSInfo                        (SSGetSSInfoPB *        pb,
  690.                                  Ptr                     dataPtr);
  691.  
  692. EXTERN_API( SS_RETCODE )
  693. SSGetVendorInfo                    (SSGetVendorInfoPB *    pb,
  694.                                  Ptr                     dataPtr);
  695.  
  696. EXTERN_API( SS_RETCODE )
  697. SSInquireAdapter                (SSInquireAdapterPB *    pb,
  698.                                  Ptr                     dataPtr);
  699.  
  700. EXTERN_API( SS_RETCODE )
  701. SSSetAdapter                    (SSGetSetAdapterPB *    pb,
  702.                                  Ptr                     dataPtr);
  703.  
  704. EXTERN_API( SS_RETCODE )
  705. SSVendorSpecific                (SSVendorSpecificPB *    pb,
  706.                                  Ptr                     dataPtr);
  707.  
  708. /*————————————————————————————————————————————————————————————————————————
  709.     Socket Functions
  710. ————————————————————————————————————————————————————————————————————————*/
  711. EXTERN_API( SS_RETCODE )
  712. SSGetSocket                        (SSGetSetSocketPB *        pb,
  713.                                  Ptr                     dataPtr);
  714.  
  715. EXTERN_API( SS_RETCODE )
  716. SSGetStatus                        (SSGetStatusPB *        pb,
  717.                                  Ptr                     dataPtr);
  718.  
  719. EXTERN_API( SS_RETCODE )
  720. SSInquireSocket                    (SSInquireSocketPB *    pb,
  721.                                  Ptr                     dataPtr);
  722.  
  723. EXTERN_API( SS_RETCODE )
  724. SSResetSocket                    (SSResetSocketPB *        pb,
  725.                                  Ptr                     dataPtr);
  726.  
  727. EXTERN_API( SS_RETCODE )
  728. SSSetSocket                        (SSGetSetSocketPB *        pb,
  729.                                  Ptr                     dataPtr);
  730.  
  731. /*————————————————————————————————————————————————————————————————————————
  732.     Window Functions
  733. ————————————————————————————————————————————————————————————————————————*/
  734. EXTERN_API( SS_RETCODE )
  735. SSGetPage                        (SSGetSetPagePB *        pb,
  736.                                  Ptr                     dataPtr);
  737.  
  738. EXTERN_API( SS_RETCODE )
  739. SSGetWindow                        (SSGetSetWindowPB *        pb,
  740.                                  Ptr                     dataPtr);
  741.  
  742. EXTERN_API( SS_RETCODE )
  743. SSInquireWindow                    (SSInquireWindowPB *    pb,
  744.                                  Ptr                     dataPtr);
  745.  
  746. EXTERN_API( SS_RETCODE )
  747. SSSetPage                        (SSGetSetPagePB *        pb,
  748.                                  Ptr                     dataPtr);
  749.  
  750. EXTERN_API( SS_RETCODE )
  751. SSSetWindow                        (SSGetSetWindowPB *        pb,
  752.                                  Ptr                     dataPtr);
  753.  
  754. /*————————————————————————————————————————————————————————————————————————
  755.     Error Detection Functions
  756. ————————————————————————————————————————————————————————————————————————*/
  757. EXTERN_API( SS_RETCODE )
  758. SSGetEDC                        (SSGetSetEDCPB *        pb,
  759.                                  Ptr                     dataPtr);
  760.  
  761. EXTERN_API( SS_RETCODE )
  762. SSInquireEDC                    (SSInquireEDCPB *        pb,
  763.                                  Ptr                     dataPtr);
  764.  
  765. EXTERN_API( SS_RETCODE )
  766. SSPauseEDC                        (SSPauseEDCPB *            pb,
  767.                                  Ptr                     dataPtr);
  768.  
  769. EXTERN_API( SS_RETCODE )
  770. SSReadEDC                        (SSReadEDCPB *            pb,
  771.                                  Ptr                     dataPtr);
  772.  
  773. EXTERN_API( SS_RETCODE )
  774. SSResumeEDC                        (SSResumeEDCPB *        pb,
  775.                                  Ptr                     dataPtr);
  776.  
  777. EXTERN_API( SS_RETCODE )
  778. SSSetEDC                        (SSGetSetEDCPB *        pb,
  779.                                  Ptr                     dataPtr);
  780.  
  781. EXTERN_API( SS_RETCODE )
  782. SSStartEDC                        (SSStartEDCPB *            pb,
  783.                                  Ptr                     dataPtr);
  784.  
  785. EXTERN_API( SS_RETCODE )
  786. SSStopEDC                        (SSStopEDCPB *            pb,
  787.                                  Ptr                     dataPtr);
  788.  
  789.  
  790.  
  791. #if PRAGMA_STRUCT_ALIGN
  792.     #pragma options align=reset
  793. #elif PRAGMA_STRUCT_PACKPUSH
  794.     #pragma pack(pop)
  795. #elif PRAGMA_STRUCT_PACK
  796.     #pragma pack()
  797. #endif
  798.  
  799. #ifdef PRAGMA_IMPORT_OFF
  800. #pragma import off
  801. #elif PRAGMA_IMPORT
  802. #pragma import reset
  803. #endif
  804.  
  805. #ifdef __cplusplus
  806. }
  807. #endif
  808.  
  809. #endif /* __SOCKETSERVICES__ */
  810.  
  811.